Diakritika pri filtrovani na cast retezce
Otázka od: Lada
26. 7. 2004 10:24
Zdravim vsechny a moc dekuju za pomoc pri filtrovani podle casti retezce.
Funguje to, jen mam problemy s diakritikou. Pokud mam v DB napr. jmeno s
malym pocatecnim pismenem s hackem a filtruju podle velkeho pocatecniho
pismene s hackem... Pokud filtruju podle casti retezce s malym poc.
pismenem s hackem, vse je OK. Obracene to nefunguje stejne.
IBQuery1.SQL.Add('Where (UPPER(Jmeno) LIKE :p1) or (UPPER(Prijmeni)
LIKE :p2)');
IBQuery1.ParamByName('p1').AsString := '%'+UpperCase(editHledej.Text)+
'%';
IBQuery1.ParamByName('p2').AsString := '%'+UpperCase(editHledej.Text)+
'%';
(DB FB1.5) WIN1250
Poradi mne nekdo jak se to resi..?
Diky moc, Lada.
Odpovedá: Milan Tomes
26. 7. 2004 10:47
V Delphi misto funkce UpperCase pouzij AnsiUpperCase - UpperCase neprevadi
ceske znaky.
S pozdravem
Milan Tomes
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Lada
> Sent: Monday, July 26, 2004 11:17 AM
>
> Funguje to, jen mam problemy s diakritikou. Pokud mam v DB napr. jmeno s
> malym pocatecnim pismenem s hackem a filtruju podle velkeho pocatecniho
> pismene s hackem... Pokud filtruju podle casti retezce s malym poc.
> pismenem s hackem, vse je OK. Obracene to nefunguje stejne.
Odpovedá: Lada
26. 7. 2004 12:11
Milan Tomes napsal(a):
>V Delphi misto funkce UpperCase pouzij AnsiUpperCase - UpperCase neprevadi
>ceske znaky.
>
>
Ahoj,
dekuju, ale asi je jeste nekde chyba...
pokud napisu:
IBQuery1.SQL.Add('Where UPPER(Jmeno) LIKE :p1');
IBQuery1.ParamByName('p1').AsString :=
'%'+AnsiUpperCase(editHledej.Text)+ '%';
nevyhleda se uz vubec nic s diakritikou.
Pokud pouziju fci UpperCase, vyhleda se alespon vse s diakritikou stejne
velikosti znaku.
Dik moc,
Lada
Odpovedá: Milan Tomes
26. 7. 2004 12:21
A mas databazi definovanou s default character set Win1250 a na sloupci
definovany COLLATE PXW_CSY ???
Pokud ne, tak je nutno pouzit nasledujici:
IBQuery1.SQL.Add('Where UPPER(Jmeno COLLATE PXW_CSY) LIKE :p1');
HTH
Milan Tomes
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Lada
> Sent: Monday, July 26, 2004 12:26 PM
>
> pokud napisu:
>
> IBQuery1.SQL.Add('Where UPPER(Jmeno) LIKE :p1');
> IBQuery1.ParamByName('p1').AsString :=
> '%'+AnsiUpperCase(editHledej.Text)+ '%';
>
> nevyhleda se uz vubec nic s diakritikou.
> Pokud pouziju fci UpperCase, vyhleda se alespon vse s diakritikou stejne
> velikosti znaku.
Odpovedá: Jakub Dusek
26. 7. 2004 18:28
Tipoval bych, ze funkce UPPER na databazi to prevede spatne, chce to
tedy donutit ke spravnemu prevedeni diakritiky i ji. Co to vrati pokud
se da pouze "SELECT UPPER(Jmeno) ..." na radek s diaktitikou?
Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
=> Sms GateKeeper, Sms GateKeeper Service
======================================================================
Monday, July 26, 2004, 12:25:32 PM, you wrote:
L> Ahoj,
L> dekuju, ale asi je jeste nekde chyba...
L> pokud napisu:
L> IBQuery1.SQL.Add('Where UPPER(Jmeno) LIKE :p1');
L> IBQuery1.ParamByName('p1').AsString :=
L> '%'+AnsiUpperCase(editHledej.Text)+ '%';
L> nevyhleda se uz vubec nic s diakritikou.
L> Pokud pouziju fci UpperCase, vyhleda se alespon vse s diakritikou stejne
L> velikosti znaku.
L> Dik moc,
L> Lada